/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package occho.model;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import occho.data.AsignaturaDAO;
import occho.data.OracleDAOFactory;
import occho.data.OraclePreguntaAlumnoDAO;
import occho.data.PreguntaAlumnoDAO;

/**
 *
 * @author Juan Antonio
 */
public class FachadaRealizarTest {
    
    /**
     * Devuelve las asignaturas de un usuario.
     * @param usuario
     * @return List<Asignatura>
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public List<Asignatura> getAsignaturas(Usuario usuario) throws ClassNotFoundException, SQLException {
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        AsignaturaDAO asignaturaDAO = daoFactory.getAsignaturaDAO();
        return asignaturaDAO.seleccionarAsignaturas(usuario);
    }
    
    /**
     * Devuelve una lista de asignaturas.
     * @return List<Asignatura>
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public List<Asignatura> getAsignaturas() throws ClassNotFoundException, SQLException{
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        AsignaturaDAO asignaturaDAO = daoFactory.getAsignaturaDAO();
        return asignaturaDAO.seleccionarAsignaturas();
    }
    
    /**
     * Inserta en la base de datos las preguntas contestadas por un alumno en un test.
     * @param lpalumnos
     * @return boolean
     * @throws SQLException
     */
    public boolean realizarTest(ArrayList<PreguntaAlumno> lpalumnos) throws SQLException{
        OracleDAOFactory daoFactory = null;
        PreguntaAlumnoDAO palumnoDAO=null;
        try {
            daoFactory=OracleDAOFactory.getInstancia();
            palumnoDAO = daoFactory.getPreguntaAlumnoDAO();
            palumnoDAO.setAutoCommit(false);
            for(PreguntaAlumno pa: lpalumnos){
                palumnoDAO.insertarPreguntaAlumno(pa);
            }
            palumnoDAO.commit();
            palumnoDAO.setAutoCommit(true);
            return true;
        } catch (ClassNotFoundException ex) {
            palumnoDAO.setAutoCommit(true);
            return false;
        } catch (SQLException ex) {
            try {
                System.out.println(ex);
                palumnoDAO.rollback();
                palumnoDAO.setAutoCommit(true);
                return false;
            } finally {
                palumnoDAO.setAutoCommit(true);
                return false;
            }
        }
    }
    
    /**
     * Actualiza una pregunta de un test contestada por un alumno.
     * @param pa
     * @return boolean
     * @throws ClassNotFoundException
     * @throws SQLException
     */
    public boolean actualizarPreguntaAlumno(PreguntaAlumno pa) throws ClassNotFoundException, SQLException{
        OracleDAOFactory daoFactory = OracleDAOFactory.getInstancia();
        PreguntaAlumnoDAO palumnoDAO=null;
        palumnoDAO = daoFactory.getPreguntaAlumnoDAO();
        return palumnoDAO.actualizarPreguntaAlumno(pa); 
    }
    
}
